package com.doit.day01.op


/**
 * flatten   将集合内部得元素值，压平(打散) ，返回得结果用一个集合来装，此时结果集合里面就是放的原来集合中一个个得元素
 */
object FlattenDemo {
  def main(args: Array[String]): Unit = {
   /* val list: List[String] = List("hello", "hi", "hadoop", "hive")

    val flatten: List[Char] = list.flatten

    flatten.foreach(println)


    //这是原来得集合，里面放的是数组
    val list1: List[Array[Int]] = List(Array(1, 2, 3), Array(4, 5, 6), Array(7, 8, 9))

    val flatten1: List[Int] = list1.flatten
    println(flatten1)
    //想要对上面得list1这个集合中得1 2 3 4 5 这些数值做一个*10得操作，然后返回到一个新的集合中
    val res: List[Int] = flatten1.map(_ * 10)
    println(res)


    //flatMap==>先做map操作，然后再压平
    val lines: List[String] = List("hello,hi,hello", "hello,hi,hive,hadoop", "hello,hi,hello")
    //将字符串按照逗号去切割，将每一个单词都放在集合里面
    //"hello,hi,hello"  ==>对他们进行切割  ==》 数组，数组里面放的是一个个得单词
    //我要对数组进行压平
    val list4: List[Array[String]] = lines.map(line => line.split(","))//list(Array(hello,hi,hello),Array(hello,hi,hive,hadoop),Array(hello,hi,hello))
    val words: List[String] = list4.flatten
    println(words)

    //flatMap   ==>先做一个map然后再flatten
    val res1: List[String] = lines.flatMap(_.split(","))
    println(res1)*/


    val list1: List[Array[Int]] = List(Array(1, 2, 3), Array(4, 5, 6), Array(7, 8, 9))

    //把里面得元素全部*10 ，然后放在一个list中
    val res: List[Int] = list1.flatMap(arr => {
      arr.map(_ * 10)
    })

  }

}
